'use strict'
process.chdir(__dirname)
const titbit = require('titbit')
const fs = require('fs')
const pg = require('pg')
const dbconfig = require('./dbconfig.js')
const wxkey = require('./wxkey.js')
const tbloader = require( 'titbit-loader')

//使用HTTP/1.1的客户端
const {httpcli} = require('gohttp')
const token = require('titbit-token')

 
let tok = new token({
    //token有效期，单位是秒
    expires:30,
    // 必须是32位字母数字
    key:'1qazxsw23edc4rfv5tgb6ynh7ujm8ikl',
    //必须是16位字母数字
    lv:'0okm9ijn8uhb7ygv'
})

//初始化数据库连接
let psql = new pg.Pool(dbconfig)

try{
    fs.accessSync('./images')
}catch(e){
    fs.mkdirSync('./images')
}

let cert_path = '/usr/local/share'

const app = new titbit({
    // 开启调试模式，会输出错误信息
    debug: true,
    globalLog: true,
    cert:`${cert_path}/api.fym.asia.pem`,
    key:`${cert_path}/api.fym.asia.key`,
})

let tb = new tbloader()
tb.init(app)

//就是在app.service 对象上添加了一个属性
app.addService('tok', tok)
app.addService('psql', psql)

app.addService('imagePath', `${__dirname}/images`)

app.get('/', async c => {
    c.send('ok')
})


app.get('/upload',async c=>{
    await c.helper.pipe('./upload.html',c.reply)
})


app.get('/mp-login/:code', async c => {
    let auth_url = `https://api.weixin.qq.com/sns/jscode2session`
    +`?appid=${wxkey.appid}`
    +`&secret=${wxkey.secret}`
    +`&js_code=${c.param.code}`
    +`&grant_type=authorization_code`

    let ret = await httpcli.get(auth_url)
                            .then(res=>{
                            return res.json()
                            })

    c.send( tok.make(ret) )
})

// 监听1234端口运行服务
app.run(2000);